// $Id: filemesh.h 72 2004-12-02 15:03:28Z jonas $
#ifndef FILEMESH_H
#define FILEMESH_H

#include <map>
#include <list>

class File;
class StoredFile;

/**
 * This is a stripped down version of a file mesh. It works on stored files and
 * tries to remember them in a fuzzy way so that you can query it if a file is
 * present. If the filter says yes, the file MIGHT be present. If it says no,
 * it is definintley NOT present.
 */
class FileMesh {
public:
	virtual ~FileMesh() {}

	virtual FileMesh *newCopy() = 0;
	virtual unsigned int calcDistance(unsigned int) = 0;
	virtual void update(unsigned int, std::map<File *, StoredFile *> &) = 0;
	virtual void rebuild(std::map<File *, StoredFile *> &) = 0;
	//virtual void rebuild(std::list<RoutingEntry> &) = 0;
};

#endif
